Computer systems are used by many individual people who all have knowledge in a number of different domains. For example, a user has developed expertise in electronic transactions from participating in several of them over time. Many of the necessary tasks in the respective user-knowledge domains can be aided or performed by computers, and many kinds of specialized hardware, firmware and software have been developed for this purpose. Often, there is provided a dedicated software application to be run on a computer system that is available to the user, and the user is then expected to make use of the application to accomplish the tasks. Particularly, the user is expected to operate the computer system and application in a way that is consistent with, and corresponds to, a real-world situation in which the user is currently involved.
Software applications often require the user to learn technical details about how to go about doing the desired task. For example, there may be many different commands, inputs, configurations, etc. that the user would have to learn to properly operate the program. Some software applications are provided with software-based training materials that the user should consult to become proficient in using the computer. An experienced user may be able to learn the details of a new computer system (or application) relatively quickly and without problem, but for others it may require more time and effort.
As a result, some users do not learn all or even a majority of the features, options and possibilities that a particular program has to offer. This may be because the user does not have time to learn them, perceives that they are too difficult to learn, or simply does not want to learn them. In many situations this leads to the user having an unsatisfactory interaction with the computer. Also, productivity may suffer if important tasks take longer to complete or are omitted.